package com.tedu.day02.test;

/**
 *
 *                           普通类   抽象类    接口类
 *                        【关系】             【特点】
 *类与类                    继承                 只能单继承、可多层继承
 *类与抽象                  继承                 可以单继承，不可以多继承
 *抽象类与抽象类             继承                 只能单继承、可多层继承
 *类与接口                  实现                 可以单继承，也可以多实现
 *并且继承同时实现多个接口
 *接口与接口                继承                 可以单继承，也可以多继承
 */
/*作业1：抽象类与接口的区别关系？简答*/
//都不能被实例化‌：抽象类和接口都不能直接被实例化。抽象类表示一种“半成品”类，需要子类继承并实现其中的抽象方法后才能实例化；而接口则是一种行为规范，需要通过实现类来实现其中的所有方法后才能被实例化。
//‌继承与实现的关系‌：类可以通过extends关键字继承抽象类，必须实现抽象类中的所有抽象方法；而类通过implements关键字实现接口，也需要实现接口中的所有方法。这一点体现了抽象类和接口在继承与实现关系上的不同。
//多继承与多实现‌：Java不支持类的多继承，但支持接口的多实现。这意味着一个类可以实现多个接口，但只能继承一个抽象类。这种设计使得接口更加灵活，可以定义多个行为规范，而抽象类则提供了一种更具体的类结构。
//‌方法与变量的定义‌：接口中只能定义抽象方法（从Java 8开始也可以定义默认方法和静态方法），并且接口中定义的变量默认是public static final的。抽象类中可以定义普通方法、抽象方法、静态方法和构造方法等，方法默认是public或protected的，抽象类中的变量可以是任何访问修饰符。
//设计目的‌：接口主要用于定义一组操作或规范，表示一种能力或行为，是对行为的抽象；而抽象类用于定义一个基本类别，提供一些默认的行为和属性，是对类别的抽象。根据具体的需要、关系和设计目的，可以选择使用接口或抽象类。
//综上所述，抽象类和接口在Java中各有其用途和优势。接口更加抽象，用于定义一组操作或规范，而不关心具体的实现逻辑；而抽象类则提供了一些默认的实现，用于定义类的基本结构和行为。在实际开发中，根据需求选择使用抽象类或接口

//5.接口与接口:继承-可以单继承，也可以多继承
interface  Loo{}    interface  Foo{}
interface Voo extends Loo,Foo{}


//4.类与接口：实现-可以单继承，也可以多实现
/*interface Loo{}    interface Foo{}
class Joo{}
class Voo extends Joo implements Loo,Foo{}
*/

//3.抽象类与抽象类：继承-只能单继承、可多层继承
/*abstract class Loo{}
abstract class Voo extends Loo{}
abstract class Uoo extends Voo{}
*/

//2.类与抽象类：继承-----可以单继承，不可以多继承
/*abstract class Uoo{}  abstract class Voo{}
class Loo extends Uoo,Voo{}
*/

//1.类与类： 继承---单继承
/*class Uoo{}
class Loo extends Uoo{}
class Voo extends Loo{}
 */




public class 关系 {
}
